package org.cnam.mobileShopping.dao;

import java.util.Date;
import java.util.List;

import org.cnam.mobileShopping.sql.DbAdapter;

import android.content.Context;

/**
 * Classe de DAO permettant de récupérer en base
 * 
 * @author laurent
 * 
 * @param <T>
 *            Le type de données à manipuler
 */
public abstract class DAO<T> {

	/** Adapter sur la base de données */
	protected DbAdapter sqlHelper;

	/**
	 * Constructeur
	 * 
	 */
	public DAO() {
	}

	/**
	 * Méthode de création
	 * 
	 * @param obj
	 * @return
	 */
	public abstract long create(T obj);

	/**
	 * Méthode pour effacer
	 * 
	 * @param obj
	 * @return
	 */
	public abstract boolean delete(T obj);

	/**
	 * Méthode de mise à jour
	 * 
	 * @param obj
	 * @return
	 */
	public abstract boolean update(T obj);

	/**
	 * Méthode de recherche des informations
	 * 
	 * @param id
	 * @return
	 */
	public abstract T find(int id);

	/**
	 * Méthode de recherche des informations
	 * 
	 * @return
	 */
	public abstract List<T> findAll();

	public abstract void synchronise(Date lastupdate, Integer userId,
			Context context);

	public abstract T findByCommonId(String commonid);
}
